"""
装饰器
    在不修改代码的同时，增强函数或者类的行为
    接收一个函数作为参数，返回新的函数
    缺点：语法复杂

语法：
    定义

        def 函数装饰器名称(func):
            def wrapper(参数 *args,**kwargs):
                res = func(*args,**kwargs)
                return 值
            return wrapper

        @函数装饰器名称
        def 原函数名称(参数):
            函数体


        原函数名称()
"""

# 装饰器函数
def new_func(func):
    def wrapper(*args,**kwargs):
        print('新')
        res = func(*args)
        return res
    return wrapper

# 原函数
@new_func
def func1(n,m):
    print(f'旧功能{n,m}')

@new_func
def func2(n,m,k):
    print(f'旧功能2{n,m,k}')


func1(5,6,g=6)
func2(5,6,7)
